// PROGRAMA : IDCS0000
// SISTEMA : SISP / IDENTIFICACAO CIVIL
// CLIENTE : INSTITUTO DE IDENTIFICACAO - GEJUSP
// PROGRAMADOR : * DATA: 27/11/97
// OBJETIVO : RELATORIO TABELA 18.( TABELA DE USUARIOS)
// : ACERTO DE DATAS (N6) PARA (N8) E MODIFICACAO DA TELA

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Idcs0000Report;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcs0000 OBJETIVO : RELATORIO TABELA 18.( TABELA DE USUARIOS) *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/idcs0000")
public class Idcs0000 {
	// Views utilizadas
	SicTabelas vwDvetab = new SicTabelas();
	SicTabelas vwTabele = new SicTabelas();
	// Telas/relatorios utilizados
	Idcs0000Report report;
	// Includes utilizados
	Sisll001 sisll001 = new Sisll001();
	// Areas globais / session
	Sisgsisp sisgsisp; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	private long codele;
	private String descri;
	private int tatv = 0;
	private int tdel = 0;
	private int datapo;

	public Idcs0000(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public InputStreamDownload executar() {
		try {
			return main();
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
		return null;
	}

	private InputStreamDownload main() throws JRException, ParseException, FileNotFoundException {
		report = new Idcs0000Report();
		report.setDataCorrente(UtilBean.obtemDataDia());

		// //DEFINE PRINTER (FM1=1) OUTPUT 'P69E'

		// RELATORIO 1 PS=60 LS=133 SG=ON
		report.setPageSize(60);
		report.setLineSize(133);
		// RELATORIO
		// report.gravaRelatorio(1);
		// UtilBean.mensagemTexto(" " idcs0000A.getCabecagov() "PAGINA:"
		// *PAGE-NUMBER(1) idcs0000A.getCabecaseg() "REL :    TABSENHA"
		// idcs0000A.getCabecaide() "DATA:" idcs0000A.getDataCorrente()
		// "EMISSAO DO CADASTRO DE APOIO ==> TABELA DE FUNCIONARIOS"
		// "HABILITADOS A UTILIZAR O SISTEMA" "-" "MATRIC.  NOME DO FUNCIONARIO"
		// "VEI CNH MUL ARR"
		// "IPV RF  PM. INF TAB SEN CRI IDC REN FUN SUP CMU  ORG" "RIA"
		// "MAT.AT.  ATUALIZ.");
		// RELATORIO
		vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 18);
		vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", 0);
		while (vwDvetab.pesquisaCodigoTabelaClas(18)) {
			report.setDintabDatatu(vwDvetab.getDataAtualizacao());
			report.setDintabMatfun(vwDvetab.getMatriculaFunc());
			mostra();
		}
		if (vwDvetab.fimDados()) {
			jfinal();
		}
		vwDvetab.fecha();
		return report.imprimir();
	}

	private void mostra() throws ParseException, JRException {
		codele = vwDvetab.getCodigoElem();
		report.setMatr(String.valueOf(UtilBean.extraiDigitos(codele, 12, 6 - 1, 7)));
		descri = vwDvetab.getDescricaoElem();
		report.setNome(UtilBean.subStr(descri, 0, 30));
		datapo = vwDvetab.getDataApoio();
		report.setOrg(String.valueOf(UtilBean.extraiDigitos(datapo, 6, 5 - 1, 2)));
		switch (UtilBean.subStr(descri, 30, 1)) {
		case "A":
		case "I": {
			tatv++;
			break;
		}
		case "E": {
			tdel++;
			break;
		}
		default: {
			break;
		}
		}
		report.setTatv(tatv);
		report.setTdel(tdel);
		if (!UtilBean.subStr(descri, 41, 1).equals("0") || !UtilBean.subStr(descri, 42, 1).equals("0")) {
			report.gravaRelatorio(3);
			// RELATORIO
		}

		descri = "";
		codele = 0;
	}

	private void jfinal() throws ParseException, JRException {
		report.setTger(tatv);
		report.setTger(tdel);
		report.gravaRelatorio(4);
		// RELATORIO
	}
}
